SUPPORT / SAMPLES & SAS NOTES
 

Support

Problem Note 64671: The FCMP procedure in a DBCS-encoded session for SAS® 9.4M6 (TS1M6) truncates the return length value to 8 bytes

DetailsHotfixAboutRate It

Running PROC FCMP in a double-byte character set (DBCS) encoded session in SAS 9.4M6 truncates the length of any return value to 8 bytes. 

The following code example demonstrates this problem:

options cmplib=(work.funcs);
proc fcmp outlib=work.funcs.test trace;
   function test_func();
            array inputargs[1]  $32;
            array outputargs[1] $32;
            _ret = .;
            call test_sub(inputargs, outputargs);
            put "--outputargs after subroutine call";
            put outputargs[1]=;
            return(_ret);
   endsub;
   subroutine test_sub(inargs_list[1] $, outargs_list[1] $);
              outargs outargs_list;
              /* length outargs_list $ 32; */ /* Uncomment this line for a workaround */
              outargs_list[1] = "I_am_an_output_value";
   endsub;
quit;
data temp;
  a=test_func();
run;

The code returns the truncated value as shown here:

--outputargs after subroutine call
outputargs[1]=I_am_an_

The following is the expected, correct output:

--outputargs after subroutine call
outputargs[1]=I_am_an_output_value

A workaround is to explicitly set the length of any OUTARGS statements. In the above code example, when the highlighted LENGTH statement is uncommented, the values are not truncated.

This issue does not affect single-byte encoded SAS sessions.

Click the Hot Fix tab in this note to access the hot fix for this issue.



Operating System and Release Information

Product FamilyProductSystemProduct ReleaseSAS Release
ReportedFixed*ReportedFixed*
SAS SystemBase SASz/OS9.4_M69.4_M69.4 TS1M69.4 TS1M6
z/OS 64-bit9.4_M69.4_M69.4 TS1M69.4 TS1M6
Microsoft® Windows® for x649.4_M69.4_M69.4 TS1M69.4 TS1M6
Microsoft Windows 8 Enterprise 32-bit9.4_M69.4_M69.4 TS1M69.4 TS1M6
Microsoft Windows 8 Enterprise x649.4_M69.4_M69.4 TS1M69.4 TS1M6
Microsoft Windows 8 Pro 32-bit9.4_M69.4_M69.4 TS1M69.4 TS1M6
Microsoft Windows 8 Pro x649.4_M69.4_M69.4 TS1M69.4 TS1M6
Microsoft Windows 8.1 Enterprise 32-bit9.4_M69.4_M69.4 TS1M69.4 TS1M6
Microsoft Windows 8.1 Enterprise x649.4_M69.4_M69.4 TS1M69.4 TS1M6
Microsoft Windows 8.1 Pro 32-bit9.4_M69.4_M69.4 TS1M69.4 TS1M6
Microsoft Windows 8.1 Pro x649.4_M69.4_M69.4 TS1M69.4 TS1M6
Microsoft Windows 109.4_M69.4_M69.4 TS1M69.4 TS1M6
Microsoft Windows Server 2012 Datacenter9.4_M69.4_M69.4 TS1M69.4 TS1M6
Microsoft Windows Server 2012 R2 Datacenter9.4_M69.4_M69.4 TS1M69.4 TS1M6
Microsoft Windows Server 2012 R2 Std9.4_M69.4_M69.4 TS1M69.4 TS1M6
Microsoft Windows Server 2012 Std9.4_M69.4_M69.4 TS1M69.4 TS1M6
Microsoft Windows Server 20169.4_M69.4_M69.4 TS1M69.4 TS1M6
Microsoft Windows Server 20199.4_M69.4_M69.4 TS1M69.4 TS1M6
Windows 7 Enterprise 32 bit9.4_M69.4_M69.4 TS1M69.4 TS1M6
Windows 7 Enterprise x649.4_M69.4_M69.4 TS1M69.4 TS1M6
Windows 7 Home Premium 32 bit9.4_M69.4_M69.4 TS1M69.4 TS1M6
Windows 7 Home Premium x649.4_M69.4_M69.4 TS1M69.4 TS1M6
Windows 7 Professional 32 bit9.4_M69.4_M69.4 TS1M69.4 TS1M6
Windows 7 Professional x649.4_M69.4_M69.4 TS1M69.4 TS1M6
Windows 7 Ultimate 32 bit9.4_M69.4_M69.4 TS1M69.4 TS1M6
Windows 7 Ultimate x649.4_M69.4_M69.4 TS1M69.4 TS1M6
64-bit Enabled AIX9.4_M69.4_M69.4 TS1M69.4 TS1M6
64-bit Enabled Solaris9.4_M69.4_M69.4 TS1M69.4 TS1M6
HP-UX IPF9.4_M69.4_M69.4 TS1M69.4 TS1M6
Linux for x649.4_M69.4_M69.4 TS1M69.4 TS1M6
Solaris for x649.4_M69.4_M69.4 TS1M69.4 TS1M6
* For software releases that are not yet generally available, the Fixed Release is the software release in which the problem is planned to be fixed.